package com.struts.action;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.xwork.StringUtils;
import org.apache.struts2.interceptor.validation.SkipValidation;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable;
import com.struts.metier.Entreprise;
import com.struts.service.EntrepriseService;

public class EntrepriseAction   extends ActionSupport implements Preparable,ModelDriven<Entreprise>{

	private static final long serialVersionUID = 1L;

	private List<Entreprise> entreprises = new ArrayList<Entreprise>();
	private Entreprise entreprise = new Entreprise();


	@Override
	public void prepare() throws Exception {
		entreprises = entrepriseService.getAll(); 
	}

	private EntrepriseService entrepriseService;


	public EntrepriseService getEntrepriseService() {
		return entrepriseService;
	}

	public void setEntrepriseService(EntrepriseService entrepriseService) {
		this.entrepriseService = entrepriseService;
	}

	@Override
	public Entreprise getModel() { 
		return entreprise;
	}

	public Entreprise getEntreprise() {
		return entreprise;
	}

	public void setEntreprise(Entreprise entreprise) {
		this.entreprise = entreprise;
	}

	public List<Entreprise> getEntreprises() { 
		return entreprises;
	}

	public void setEntreprises(List<Entreprise> entreprises) {
		this.entreprises = entreprises;
	}

	public String getAll(){
		entreprises = entrepriseService.getAll();
		return Action.SUCCESS;
	}

	public String addOrUpd(){   
		if(entreprise.getId() == null){
			entrepriseService.add(entreprise);
		}else{ 
			entrepriseService.upd(entreprise);
		} 
		return Action.SUCCESS;
	}

	@SkipValidation 
	public String rmv(){   
		if(entreprise.getId() != null){
			entrepriseService.rmv(entreprise.getId());
		} 
		return Action.SUCCESS;
	}

	/** edit et rmv sont mis a skipvalidation car on ne veut pas que les intercepteurs font des controles(via la methode validate)
	 * car cela peut poser des blems, par defaut tt les actions passent par la validate, et c'est a nous de specifier qu'on ne vet
	 * pas que se fasse la validation pr les autres cas **/
	 
	@SkipValidation 
	public String edit(){
		if(entreprise!=null && entreprise.getId()!=null){
			entreprise = entrepriseService.getById(entreprise.getId());
		}
		return Action.SUCCESS;
	}

	@Override
	public void validate() {
		if(entreprise!=null && StringUtils.isEmpty(entreprise.getName())){
			addFieldError(Entreprise.PROP_NOM,getText("entreprise.erreur.nomObligatoire")); 
		}  
	}
}
